/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package CiaAerea;
import java.util.ArrayList;
/**
 *
 * @author Thomas
 */
public class Voo {
    
    private static int codigoIdentificar = 0;
    private String data;
    private String hora;
    private double valorPassagemEconomica;
    private double valorPassagemExecutiva;
    private int numeroLugaresVagos;
    private int numeroLugaresOcupados;
    private boolean mapaDeOcupacao[][];
    
    private Aeronave aeronaveVoo;
    private Destino destinoVoo;
    private ArrayList<Reserva> reservaVoo= new ArrayList<Reserva>();
    
    //Construtor da classe Voo
    public Voo(){
       setCodigoIdentificador( codigoIdentificar );
       setData( "" );
       setHora( "" );
       setValorPassagemEconomica( 200.00 );
       setValorPassagemExecutiva( 500.00 );
       setNumLugaresVagos( 100 ); /*ALTERAR*/
       setNumLugaresOcupados( 0 );
       
       aeronaveVoo = null;
       destinoVoo = null;
       
       codigoIdentificar++;
    }
    
    //Construtor sobrecarregado da classe Voo
    public Voo(int Vcod, String Vdata, String Vhora, double VPEc, double VPEx,int Vlivre, 
            int Vocupado, Aeronave nave,Destino destino)
    {
       setCodigoIdentificador( Vcod );
       setData( Vdata );
       setHora( Vhora );
       setValorPassagemEconomica( VPEc );
       setValorPassagemExecutiva( VPEx );
       setNumLugaresVagos(Vlivre);
       setNumLugaresOcupados( Vocupado );
       
       aeronaveVoo = nave;
       setmapaAssentos(aeronaveVoo);
       
       destinoVoo = destino;
    }
    
    //Funções de SET para a classe Destino
     public void setCodigoIdentificador( int Vcod ){  
        this.codigoIdentificar = Vcod;
    }
    
    public void setData( String Vdata ){      
        
        if(Vdata != null){
          this.data = Vdata;  
        }
        
    }
    
    public void setHora( String Vhora ){
        
        if( Vhora != null ){
           this.hora = Vhora; 
        }
        
    }
    
    public void setValorPassagemEconomica( double VPEc ){
        
        if( VPEc > 0){
          this.valorPassagemEconomica = VPEc;  
        }else{
            System.out.println("Valor da passagem negativa");
        }
        
    }
    
    public void setValorPassagemExecutiva( double VPEx ){
        
        if(VPEx > 0){
          this.valorPassagemExecutiva = VPEx;  
        }else{
            System.out.println("Valor da passagem negativa");
        }
        
    }
    
    public void setNumLugaresVagos(int Vlivre ){
       
        if(Vlivre < 0){
         this.numeroLugaresVagos = Vlivre;  
       }else{
         System.out.println("Numero de vagas inválido ");  
       }
        
    }
    
    public void setNumLugaresOcupados( int Vocupado ){
        
        if(Vocupado < 0){
           this.numeroLugaresOcupados = Vocupado; 
        }else{
          System.out.println("Numero de vagas ocupado inválido ");  
        }
        
    }
    
    public void setmapaAssentos(Aeronave Airbus){
        int fileiras, assentos;
        
        fileiras = Airbus.getNumTotalFileiras();
        assentos = Airbus.getNumAssentosPorFileira();
        
        mapaDeOcupacao = new boolean[ fileiras ][ assentos ];
    }
    
    public void setAeronaveVoo(Aeronave Airbus){
        aeronaveVoo = Airbus;
    }
    
    public void setDestinoVoo(Destino destino){
        destinoVoo = destino;
    }
    
    public void setReservaVoo(Reserva R){
        reservaVoo.add(R);
    }
    //Funções de GET para a classe Destino
    
    public int getCodigoIdentificador(){  
        return ( this.codigoIdentificar );
    }
    
    public String getData(){      
        return ( this.data );
    }
    
    public String getHora(){
        return ( this.hora );
    }
    
    public double getValorPassagemEconomica(){
        return (this.valorPassagemEconomica );
    }
    
    public double getValorPassagemExecutiva(){
        return (this.valorPassagemExecutiva);
    }
    
    public int getNumLugaresVagos(){
        return ( this.numeroLugaresVagos );
    }
    
    public int getNumLugaresOcupados(){
        return ( this.numeroLugaresOcupados );
    }
    
    public Aeronave getAeronaveVoo(){
        return aeronaveVoo;
    }
    
    public Destino getDestinoVoo(){
        return destinoVoo;
    }
    
    //public Reserva getReservaVoo(){
       // return reserva;
    //}
}

